L1和L2正则化

L0范数,L1范数,L2范数

L0范数是指向量中非0元素的个数。

如果我们用L0范数来规则化一个参数矩阵W的话(正则项),就是希望W的大部分元素都是0。换句话说,让参数W是稀疏的。

L1范数是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。

为什么要稀疏?

特征选择(Feature Selection):

稀疏规则化它能实现特征的自动选择。一般来说,一个样本的大部分特征都是和最终的输出没有关系或者不提供任何信息的,在最小化目标函数的时候考虑这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息被考虑反而干扰了对正确标签的预测。稀疏规则化算子的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。

可解释性(Interpretability):

另一个青睐于稀疏的理由是,模型更容易解释。例如患某种病的概率是y,然后我们收集到的数据x是1000维的,也就是我们需要寻找这1000种因素到底是怎么影响患上这种病的概率的。假设我们这个是个回归模型:$y=w_1x_1+w_2x_2+…+w_{1000}x_{1000}+b$ (为了让y限定在[0,1]的范围,一般还得加个Logistic函数)。通过学习,如果最后学习到的w就只有很少的非零元素,例如只有5个非零的$w_i$,那么我们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的,决策性的。也就是说,患不患这种病只和这5个因素有关,那医生就好分析多了。但如果1000个$w_i$都非0,医生面对这1000种因素,累觉不爱。

L2范数是指向量各元素的平方和然后求平方根。作用是改善过拟合。

在回归里面,有人把有它的回归叫“岭回归”(Ridge Regression),有人也叫它“权值衰减weight decay”。

实际上,对于L1和L2规则化的代价函数来说,我们可以写成以下形式:

img

为什么L1正则化可以取稀疏解

等值线图的理解:

l1l2

目标函数由两部分组成:原始的损失函数和正则项

img

其中$J_0$是原始的损失函数,是关于权重w的函数,上图中的等值线图考虑了只有两个权重系数的情况。

右上方的彩色圆圈是关于原始损失函数的等值线图,可以想象成是一个曲面压平后的结果。

因此,每一圈上的每个坐标带入原始损失函数得到的损失值是相同的。

由于原始损失函数是凸函数,因此紫色中心是取值最小的,也就是说,不加正则项,我们应该取紫色点的权重坐标。而越往外扩散,原始损失函数的取值越大。

注意:等值线图并没有画全,还可以继续向外扩散。

正则项相当于对原始损失函数做了约束,令L代表正则项,因此黑色线圈表示满足约束的权重坐标。

如果是L1, 则$L=|w_1| + |w_2|$, 若为L2, 则$L = |w_1|^2 + |w_2|^2$

因此,为了要满足约束,我们要取黑色线与彩色线的交点,但是同时为了使彩色线的取值尽可能小,我们需要取尽可能靠近紫色线方向的线圈,因此最终取图中的交点。否则,如果和黑色线上别的交点相交,彩色线圈会往外移,导致取值增加。

为什么L2可以获得平滑的解?(从理论角度)

假设原始损失函数为:

2m

此时,进行梯度迭代的公式为:

img

如果加上L2正则项,则梯度更新公式变为:

img

因此,与未添加L2的情况相比,参数每次迭代都要乘以一个小于1的因子,从而使得参数不断减小。

为什么正则化/参数较小可以防止过拟合?

  1. 直观理解就是:正则项λ越大,那么权重就会越小,使得神经网络变得简单。

根据激活函数理解,假设激活函数是tanh:

img

可以发现,当z值较小时,激活函数的部分几乎为线性形状。

如果正则化项λ很大,那么权重就会很小,因此相对来说,z=wx+b也会很小,因此在这段范围内,激活函数呈线性,和线性回归类似,因此,当每层网络都是线性网络,那么整个网络都是一个线性网络,无法适用于复杂决策,不会发生过拟合。

  1. 过拟合的时候,拟合函数的系数往往非常大,为什么?如下图所示,过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。

img

而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。

贝叶斯派解释:

加2范数正则等价于加了高斯分布的先验,加1范数正则相当于加拉普拉斯分布先验。

为什么L2得到的系数趋于相同

L2正则化将系数向量的L2范数添加到了损失函数中。由于L2惩罚项中系数是二次方的,这使得L2和L1有着诸多差异,最明显的一点就是,L2正则化会让系数的取值变得平均。对于关联特征,这意味着他们能够获得更相近的对应系数。还是以Y=X1+X2为例,假设X1和X2具有很强的关联,如果用L1正则化,不论学到的模型是Y=X1+X2还是Y=2X1,惩罚都是一样的,都是2alpha。但是对于L2来说,第一个模型的惩罚项是2alpha,但第二个模型的是4*alpha。可以看出,系数之和为常数时,各系数相等时惩罚是最小的,所以才有了L2会让各个系数趋于相同的特点。

总结

因此,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。

L1正则假设参数的先验分布是Laplace分布,可以保证模型的稀疏性,也就是某些参数等于0;

L2正则假设参数的先验分布是Gaussian分布,可以保证模型的稳定性,也就是参数的值不会太大或太小;

在实际使用中,如果特征是高维稀疏的,则使用L1正则;如果特征是低维稠密的,则使用L2正则。

参考:

百度知道:https://zhidao.baidu.com/question/1864240911512690707.html

博客:http://blog.csdn.net/zouxy09/article/details/24971995

L2正则化导致参数较小:https://blog.csdn.net/jinping_shi/article/details/52433975

等值线图形的解释:https://blog.csdn.net/weixin_39845112/article/details/80114918